/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author IST-SENAI
 */
@Entity
@Table(name = "contagem", catalog = "mydb", schema = "")
@XmlRootElement
@NamedQueries({
		@NamedQuery(name = "Contagem.findAll", query = "SELECT c FROM Contagem c"),
		@NamedQuery(name = "Contagem.findById", query = "SELECT c FROM Contagem c WHERE c.id = :id"),
		@NamedQuery(name = "Contagem.findByDatacontagem", query = "SELECT c FROM Contagem c WHERE c.datacontagem = :datacontagem"),
		@NamedQuery(name = "Contagem.findByDescricao", query = "SELECT c FROM Contagem c WHERE c.descricao = :descricao"),
		@NamedQuery(name = "Contagem.findByQuantidade", query = "SELECT c FROM Contagem c WHERE c.quantidade = :quantidade") })
public class Contagem implements Serializable {
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Basic(optional = false)
	@Column(name = "id", nullable = false)
	private Integer id;
	@Column(name = "datacontagem")
	@Temporal(TemporalType.DATE)
	private Date datacontagem;

	@Column(name = "descricao", length = 255)
	private String descricao;
	@Column(name = "quantidade")
	private Integer quantidade;
	@JoinColumn(name = "idPessoa", referencedColumnName = "id", nullable = false)
	@ManyToOne(optional = false)
	private Pessoa idPessoa;
	@JoinColumn(name = "idValor", referencedColumnName = "id", nullable = false)
	@ManyToOne(optional = false)
	private Valor idValor;

	@ManyToMany
	@JoinTable(name = "valor", joinColumns = { @JoinColumn(name = "idEmpresa", referencedColumnName = "id") },
	inverseJoinColumns = { @JoinColumn(name = "idContagem", referencedColumnName = "id") })
	private List<Empresa> idEmpresa;

	public Contagem() {
	}

	public Contagem(Integer id) {
		this.id = id;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Date getDatacontagem() {
		return datacontagem;
	}

	public void setDatacontagem(Date datacontagem) {
		this.datacontagem = datacontagem;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Integer getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}

	public Pessoa getIdPessoa() {
		return idPessoa;
	}

	public void setIdPessoa(Pessoa idPessoa) {
		this.idPessoa = idPessoa;
	}

	public Valor getIdValor() {
		return idValor;
	}

	public void setIdValor(Valor idValor) {
		this.idValor = idValor;
	}

	

	public List<Empresa> getIdEmpresa() {
		return idEmpresa;
	}

	public void setIdEmpresa(List<Empresa> idEmpresa) {
		this.idEmpresa = idEmpresa;
	}

	@Override
	public int hashCode() {
		int hash = 0;
		hash += (id != null ? id.hashCode() : 0);
		return hash;
	}

	@Override
	public boolean equals(Object object) {
		// TODO: Warning - this method won't work in the case the id fields are
		// not set
		if (!(object instanceof Contagem)) {
			return false;
		}
		Contagem other = (Contagem) object;
		if ((this.id == null && other.id != null)
				|| (this.id != null && !this.id.equals(other.id))) {
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		return "br.com.entidades.Contagem[ id=" + id + " ]";
	}

}
